package logica_de_presentacion;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import comun.Usuario;
import logica_de_negocio.FaltanDatosEnLaBaseDeDatos;
import logica_de_negocio.excepAnadirDupli;
import logica_de_negocio.gestorUsuario;

public class FormularioAnadirUsuarioAdministrador extends JInternalFrame implements ActionListener {

	/**
	 * FORMULARIO PARA ANADIR USUARIOS
	 */
	private static final long serialVersionUID = 1L;
	protected JButton bCancelar;
	protected JButton anadir;
	protected JTextField usuario;
	protected JPasswordField contrasena;
	private JFrame avisos;
	protected boolean pasar,isAdmin;
	
	
	public FormularioAnadirUsuarioAdministrador(boolean isAdmin){
		//Modificar,USUARIO, CONTRASENA
		super("Usuario",true,true,true,true);
		//Nombre,    resizable,closable,maximizable,inconifiable (minimizable)

		this.pasar=false;
		this.isAdmin=isAdmin;
		this.setVisible(true);

		this.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
		
		JPanel pUsu=new JPanel(new FlowLayout());
		JPanel pCon=new JPanel(new FlowLayout());//TIPO DE ORDENACION
		JPanel pTex=new JPanel(new BorderLayout());
		JPanel Botones=new JPanel();
		
		
		//TEXTO
		usuario=new JTextField(20);
		JLabel lU;
		if(isAdmin){
			lU=new JLabel("Indique el nombre de administrado deseado:");
		}else{
			lU=new JLabel("Indique el nombre de usuario deseado:");
		}
		
		pUsu.add(lU);
		pUsu.add(usuario);
		
		contrasena=new JPasswordField(20);
		JLabel lC=new JLabel("Contrasena:");
		pCon.add(lC);	
		pCon.add(contrasena);
		
		pTex.add(pUsu,"North");
		pTex.add(pCon,"Center");
		
				
		//BOTONES
		ImageIcon tick= createImageIcon("/logica_de_presentacion/imagenes/TICK.gif");
		anadir= new JButton("Anadir",tick);	
		anadir.setVerticalTextPosition(AbstractButton.CENTER);
		anadir.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
		anadir.setToolTipText("Anadir usuario en la base de datos");
		Botones.add(anadir);
		anadir.addActionListener(this);
		
		ImageIcon cancelar= createImageIcon("/logica_de_presentacion/imagenes/CANCELAR.gif");
		bCancelar=new JButton("Cancelar",cancelar);
		bCancelar.setVerticalTextPosition(AbstractButton.CENTER);
		bCancelar.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
		

		Botones.add(bCancelar);
		bCancelar.addActionListener(this);
		
		//ANADIMOS AL PANEL PRINCIPAL
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(pTex, "North");
		this.getContentPane().add(Botones,"Center");
		
		//TAMANO JUSTO
		this.pack();
		
	}
	@Deprecated
	@Override
	public void actionPerformed(ActionEvent e) {

		JButton botonPulsa =(JButton) e.getSource();
		
		if(botonPulsa==bCancelar){
			
			int valor=JOptionPane.showConfirmDialog(this, "ESTA SEGURO ?");
			//YES=0, NO=1,Cancel =2
			if(valor==0){
				this.dispose();
			}
		}else{// ANADIR
			
			if(botonPulsa==anadir){
				//ANADIR
				gestorUsuario gu=new gestorUsuario();
				try{
					boolean libr=gu.libre(usuario.getText());
				
				if(libr==true){

					try {
						gu.anadiUsu(0,usuario.getText(),contrasena.getText(),isAdmin);
					} catch (excepAnadirDupli e1) {
						JOptionPane.showMessageDialog(avisos, "El usuario ya esta escoguido pruebe con otro");
					} catch (ClassNotFoundException e1) {
						JOptionPane.showMessageDialog(new Frame(),
								"No hay informacion en la base de datos");
						this.dispose();
					}
					pasar=true;
					String que="usuario";
					if(isAdmin){
						que="administrador";
					}
					
					JOptionPane.showMessageDialog(avisos, "El "+que+" se ha anadido correctamente");
					this.dispose();
				}else{
					JOptionPane.showMessageDialog(avisos, "El nombre ya esta escoguido pruebe con otro");
				}
				}catch(ClassNotFoundException e2)
				{JOptionPane.showMessageDialog(new Frame(),
						"No hay informacion en la base de datos");
				this.dispose();}
			}
		}
	}
	/** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) 
    {
        java.net.URL imgURL = Button.class.getResource(path);
        if (imgURL != null) 
        {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

	public boolean getPasar() {
		return pasar;
	}
	
	public Usuario getUsu() throws FaltanDatosEnLaBaseDeDatos, ClassNotFoundException {
		gestorUsuario gu=new gestorUsuario();
		Usuario usu=gu.getUsuario(usuario.getText());
		
		return usu;
	} 
}
